Virtualization allows a computer system to host different environments for executing applications. The virtual environments may allow applications to be isolated and/or allow hardware to be emulated. Virtualization is useful for allowing the execution of computer software written for a different type of hardware than present in the computer system hosting the virtualized environments. Virtual environments may be hosted in partitions that span multiple processors in a computer system, span multiple computer systems in a data center, and span multiple geographically-disparate datacenters. A partition may execute, for example, applications within a WINDOWS or Linux operating system image.
The images may communicate with each other through a logical interconnect fabric. The fabric provides a communication path for partitions with different relationships. For example, partitions may be adjacent when both partitions are hosted on the same server. Partitions may be co-located when partitions are on different servers within the same data center. Partitions may be geographically dispersed when partitions are geographically separated.
Conventionally, the choice of media and physical communications characteristics for a pair of partitions is resolved astronomically at run-time to determine the optimal communications channel, whether the partitions are adjacent, collocated or geographically dispersed. When the software components are in either the same partition or in multiple partitions on the same computer system the interconnect allows communication between these images across a shared-memory transport. Software components located in partitions, on different computer systems utilize a wire interconnect.
Cloud computing has enabled many enterprise applications to move to the cloud. But for performance critical applications, the input/output (I/O) waiting time of sending data to and from the cloud can unacceptably reduce performance. Data analysis applications, and other data-intensive applications, create increased traffic between computer systems. For example, data may be stored on a first computer system and accessed and processed on a second computer system. When the data storage and data processing applications execute on different partitions, significant amount of data may be exchanged that can lead to increased I/O waiting time. The I/O waiting time is particularly pronounced when the partitions are located on different servers and/or in different data centers.
FIG. 1 is a block diagram of a conventional distribution of applications in virtualized environments. A first data center 110 may include a server 112 having an Intel-based hardware platform 114. A partition manager 116 executes on the hardware platform 114, which executes several partitions 120, 122, and 124. The partitions 120, 122, and 124 may execute different operating systems within virtualized environments and share data through shared memory in the hardware platform 114 through control of the partition manager 116. Within each of the partitions 120, 122, and 124, applications 120a-b, 122a-c, and 124a-c may execute, respectively. Server 130 may also be part of the data center 110 and be configured similar to the server 110. A second data center 150 may be similarly configured to the first data center 110 and may be located at a different location than the first data center 110.
System images may span one or more partitions. For example, a first system image may include the application 120a, the application 124c, an application executing in the second server 130 and an application executing in the second data center 150. In another example, a second system image may include an application executing in the second server 130 and an application executing in the second data center 150. Interconnects between the server 120 and the server 130 and between the first data center 110 and the second data center 150 may allow data to be shared between partitions on different servers and different data centers. The interconnect may be, for example, a network connection, such as an Ethernet connection.
Although the interconnect provides a communication channel between computer systems, the communication delay depends on how partitions are placed within the different computer systems. For example, shared memory is a much faster communication path than the interconnect. Conventionally, there is no attention to how partitions are placed across computer systems. As a result, the partitions may be scattered around in a data center or even across data centers. The lack of organization may lead to unnecessary use of the slower interconnect communication path, which reduces performance of the applications, rather than the faster shared-memory communications path.